/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package colloque.helpers;

import colloque.Evalue;
import colloque.HibernateUtil;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Thomas
 */
public class EvalueHelper {

    Session session = null;

    /**
     *
     */
    public EvalueHelper() {
        this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    /**
     * Retourne la liste des évaluations effectuées par un utilisateur
     * 
     * @param utilisateur
     * @return
     */
    public List<Evalue> getEvaluationsArchivesFromMembre(int utilisateur) {
        List<Evalue> tabEvalue = new ArrayList<Evalue>();
        try {
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Evalue as ev where ev.expose.exposeid in (select e.exposeid from Expose e where e.exposeetat is not null) and ev.utilisateur.utilisateurid =" + utilisateur);
            tabEvalue = q.list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tabEvalue;
    }
    
    /**
     * Retourn la liste des évaluations faites pour un colloque et calcule la pondération
     * 
     * @param colloqueid
     * @return
     */
    public List getEvaluationsFromColloque(int colloqueid) {
        List tabEvalue = new ArrayList();
        try {
            Transaction tx = session.beginTransaction();
            String sql = "SELECT SUM(e.evalpertinence + e.evalimportance + e.evallisibilite + (e.evalfinale*3)) AS 'Montant', e.exposeid, u.utilisateurnom, u.utilisateurprenom FROM EVALUE e, EXPOSE ex, UTILISATEUR u WHERE u.utilisateurid = ex.utilisateurid AND ex.exposeid = e.exposeid AND ex.exposeetat = 2 AND ex.colloqueid = " + colloqueid + " GROUP BY e.exposeid ORDER BY Montant DESC";
            
            Query query = session.createSQLQuery(sql);
            tabEvalue = query.list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tabEvalue;
    }
    
    
    /**
     * Retourne l'évaluation par son id
     * 
     * @param id
     * @return
     */
    public Evalue getEvaluationById(int id) {
        Evalue evaluation = new Evalue();
        try {
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Evalue ev where ev.evalid =" + id);
            evaluation = (Evalue) q.uniqueResult();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return evaluation;
    }
    
}
